This invention relates generally to communication systems, and more particularly to a decoder for use in a receiver of a convolutionally coded communication system.
Convolutional codes are often used in digital communication systems to protect transmitted information from error. Such communication systems include the Direct Sequence Code Division Multiple Access (DS-CDMA) standard IS-95 and the Global System for Mobile Communications (GSM). Typically in these systems, a signal is convolutionally coded into an outgoing code vector that is transmitted. At a receiver, a practical soft-decision decoder, such as a Viterbi decoder as is known in the art, uses a trellis structure to perform an optimum search for the maximum likelihood transmitted code vector.
More recently, turbo codes have been developed that outperform conventional coding techniques. Turbo codes are generally composed of two or more convolutional codes and turbo interleavers. Turbo decoding is iterative and iteratively uses a soft output decoder to decode the individual convolutional component codes. The soft output decoder is usually a MAP (maximum a posteriori) or soft output Viterbi algorithm (SOVA) decoder. The soft output decoder provides information on each bit position that helps the soft output decoder decode the other convolutional codes. At each iteration, the soft output decoder provides information on each bit position that helps in the soft output decoding of the next component convolutional code in the next iteration. If only two convolutional codes constitute a turbo code then after the second iteration the soft outputs are fed back to the soft output decoder operating on the first component code and the process repeats itself. Typically after a fixed number of iterations a halt is called to the decoding process and a hard decision made on the output of the last iteration. If there is little or no impact on the subsequent hard decisions, it is desirable to call an early halt to the iterative process (via a stopping criteria) to save calculation time and more importantly circuit power drain.
Turbo coding is efficiently utilized to correct errors in the case of communicating over an added white Gaussian noise (AWGN) channel. Intuitively, there are a few ways to examine and evaluate the error correcting performance of the turbo decoder. One observation is that the magnitude of log-likelihood ratio (LLR) for each information bit in the iterative portion of the decoder increases as iterations go on. This improves the probability of the correct decisions. The LLR magnitude increase is directly related to the number of iterations in the turbo decoding process. However, it is desirable to reduce the number of iterations to save calculation time and circuit power. The appropriate number of iterations (stopping criteria) for a reliably turbo decoded block varies as the quality of the incoming signal and the resulting number of errors incurred therein. In other words, the number of iterations needed is related to channel conditions, where a noisier environment will need more iterations to correctly resolve the information bits and reduce error.
One prior art stopping criteria utilizes a parity check as an indicator to stop the decoding process. Although doing a parity check is straightforward, it is not reliable if there are many bit errors. Another type of stopping criteria for the turbo decoding is the LLR (log-likelihood-ratio) value as calculated for each decoded bit. Since turbo decoding converges after a number of iterations, the LLR of a data bit is the most direct indicator index for this convergence. One way this stopping criteria is applied is to compare LLR magnitude to a certain threshold. However, it can be difficult to determine the proper threshold as channel conditions are variable. Still other prior art stopping criteria measure the entropy or difference of two probability distributions, but this requires much calculation.
There is a need for a decoder that can determine the appropriate stopping point for the number of iterations of the decoder in a reliable manner. It would also be of benefit to provide the stopping criteria without a significant increase in calculation complexity.